15
תגובות
יש דרך ב-PHP לבדוק מאיפה המשתמש הופנה,
זאת אומרת מאיזה טופס באיזה עמוד הוא הופנה? (אני מקבל נתונים לדף בצורת POST).
קצת קשה להסביר למה אני צריך את זה אבל זה ממש חשוב.
תודה לעוזרים :)

15 תשובות

avatar ענה intval ב 19 לדצמבר 2013 #

כן, במשתנה

$_SERVER["HTTP_REFERER"]

נמצאת כתובת העמוד שממנה הטופס נשלח או נמצא הקישור שהמשתמש לחץ כדי להגיע לעמוד הנוכחי.
אם הוא ריק - זה אומר שהמשתמש כתב את הכתובת של העמוד ישירות בשורת הכתובת.

avatar ענה yossi787 ב 19 לדצמבר 2013 #

תודה רבה :)
אפשר להערים על המשתנה הזה, זאת אומרת איך שהוא לשנות אותו? (בכל זאת- SERVER)
אני רוצה להיות בטוח במאה אחוז שאין עוד פירצות שיותר מדי קלות לפיצוח.

avatar ענה intval ב 19 לדצמבר 2013 #

כן, אפשר. referer מגיע מהדפדן וניתן לשינוי בקלות.

אם אתה צריך את זה לצורכי אבטחה, תוסיף לטופס שדה חבוי עם ערך רנדומלי. את אותו הערך תכניס גם לסשן.
בעמוד שאליו התופס נשלח - תבדוק שהשדה מהטופס והערך בסשן זהים. בצורה הזו המשתמש יהיה חייב קודם לפתוח את העמוד של הטופס (שבו ירשם לסשן משהו) ורק אחרי זה לשלוח נתונים לעמוד הבדיקה.

avatar ענה yossi787 ב 19 לדצמבר 2013 #

הבעיה היא שהשליחה לא מתבצעת מדף PHP אלא מקובץ פלאש, שאפשר לראות את המקור שלו בלי בעיות, ערך חבוי לא יעזור..

avatar ענה intval ב 19 לדצמבר 2013 #

גם תוכן של שדה חבוי בטופס אפשר לראות בלי בעיות. המטרה היא לא שיהיה חבוי, אלה שהשרת ייצר אחד כזה, יכניס לסשן והטופס מהפלאש ישלח אותו. זו הדרך היחידה לוודא שהבן אדם לפני זה פתח את קובץ הפלאש.

קצת להקשות אפשר על ידי הוספת קוד לתוך הפלאש, שמוסיף עוד שדה נוסף לתוכן של הטופס עם md5 של המחרוזת הרנדומלית + איזושהי סיסמה/קוד(salt) קבוע שמובנה בתוך הפלאש. הסקריפט המקבל יבדוק את קיום השדה ואת התאימות של הערך.

הדבר הזה יכול, במקרה הטוב, להוסיף עוד שלב שמצריך דיקומפילציה של קובץ הפלאש, כדי להוציא משם את הסיסמה. אבל בכל מקרה, כזה או אחר, אי אפשר לאבטח בצורה טכנית יותר מזה. כל קוד שרץ על המכונה של הלקוח - הוא על המכונה של הלקוח והלקוח יכול לעשות איתו מה שהוא רוצה, כולל לכתוב קוד דומה משלו ששולח את אותם הנתונים.

avatar ענה yossi787 ב 19 לדצמבר 2013 #

תודה, עכשיו כשאני חושב על זה, אני לא חושב שמישהו כל-כך ישקיע בזה, סך הכל לקבל כסף וירטואלי באתר (זה ללא פרסים במציאות) אז אני אסתפק בתשובה הקודמת.
תודה רבה, עזרת לי מאוד!

avatar ענה razand ב 20 לדצמבר 2013 #

יוסי?
למה להשאיר פריצות אבטחה?
תנסה כמה שיותר לחסום את זה...
וזה אפשרי!

avatar ענה yossi787 ב 20 לדצמבר 2013 #

לא ממש הבנתי את התשובה שלו..
יש אפשרות בכלל ליצור סשן בפלאש?
ו-md5, אני מתכנת ב-AS2...

avatar ענה razand ב 20 לדצמבר 2013 #

יוסי שאני לא ידע במה אתה מתכנת?
בכל מקרה אתה יכול לטעון קובץ שהוא יצור את הסשן..
וMD5 כמובן זה אפשרי בפלאש עם מחלקה מיוחדת...

avatar ענה yossi787 ב 20 לדצמבר 2013 #

ואז גם המשתמש יוכל לטעון את הקובץ.
בעצם יכול להיות שעליתי על פתרון, אני יצרתי דף שממנו מקבלים מחרוזת רנדומלית, ועוד דף שבודק את המחרוזת (המחרוזת מוכנסת למסד בצירוף ה-IP) ואת כתובת ה-IP במידה ונכון, זה מוסיף את הפרס ומוחק את המחרוזת, במידה ולא, זה לא עושה כלום.
הבעיה שלי מלכתחילה הייתה ששכחתי מ-crossdomain, הוספתי עכשיו אחד כזה שמאפשר טעינה רק מאותו דומיין, ונראה לי שזה יפתור את כל הבעיות.
את crossdomain אי אפשר לעקוף? (אני אומר את זה בחצי היגד חצי שאלה)
אגב:
"יוסי שאני לא ידע במה אתה מתכנת?"
זה טעות כתיב או שפשט לא הבנתי מה רצית להגיד?

avatar ענה razand ב 20 לדצמבר 2013 #

זה לא זה שגיאת כתיב...
ו-crossdomain אפשר לעקוף....
אפשר לעקוף הכול עם קצת מתאמצים...

avatar ענה yossi787 ב 21 לדצמבר 2013 #

אם אפשר לעקוף הכל, אז אין בעצם הגנה אמיתית?...

avatar ענה razand ב 22 לדצמבר 2013 #

אממ יש הגנה...
לדוגמה צריך לדאוג שלא יעשו לקובץ פלאש שלך decompile
ואז אתה צריך לנסות לעשות איזה משהו לטקסט שאתה רוצה להעביר במין "פונקציה" סודית ככה שרק מי שיצר אותה יודע....

avatar ענה yossi787 ב 22 לדצמבר 2013 #

איך באמת מונעים decompile?

avatar ענה razand ב 22 לדצמבר 2013 #

יש תוכנות לזה וגם יש עוד דרכים...